package br.com.fatecmc.persephone.maoDeObra.core.dao.impl;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.logging.Level;
import java.util.logging.Logger;

import br.com.fatecmc.core.dao.AbstractDAO;
import br.com.fatecmc.fatec.domain.Entidade;
import br.com.fatecmc.persephone.maoDeObra.domain.TipoAcidente;

public class DAOTipoAcidente extends AbstractDAO {

	@Override
	public void salvar(Entidade obj) throws IllegalArgumentException {
		try {
			TipoAcidente categoria = (TipoAcidente) obj;
			conexao.getConexao().createStatement(); 
	        String sql =  "INSERT INTO tba_tipos_acidentes_trabalho ( id_tipo, descricao )" +
	        			   "VALUES(?,?)";
	        PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	        pstm.setInt(1, categoria.getId());
	        pstm.setString(2, categoria.getDescricao());
	        pstm.executeUpdate();
	        pstm.close();
	        conexao.getConexao().close();
		} catch (Exception e) {
			Logger.getLogger(DAOTipoAcidente.class.getName()).log(Level.SEVERE, null, e);
		}	
	}

	@Override
	public Entidade alterar(Entidade obj) {
		try {
			TipoAcidente categoria = (TipoAcidente) obj;
			conexao.getConexao().createStatement(); 
	        String sql =  "update tba_tipos_acidentes_trabalho  set descricao =? where id_tipo = ?" +
	        			   "VALUES(?,?)";
	        PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
	        pstm.setInt(2, categoria.getId());
	        pstm.setString(1, categoria.getDescricao());
	        pstm.executeUpdate();
	        pstm.close();
	        conexao.getConexao().close();
	        return categoria;
		} catch (Exception e) {
			
			Logger.getLogger(DAOTipoAcidente.class.getName()).log(Level.SEVERE, null, e);
			return null;
		}	
	}

	@Override
	public boolean excluir(Entidade obj) {
		try {
			TipoAcidente categoria = (TipoAcidente) obj;
            conexao.getConexao().createStatement(); 
            String sql =  "delete from tba_tipos_acidentes_trabalho where id_tipo = ? ";
            PreparedStatement pstm = conexao.getConexao().prepareStatement(sql);
            pstm.setInt(1 , categoria.getId());
            pstm.executeUpdate();
            conexao.getConexao().close();
            pstm.close();
            return true;
        } catch (SQLException ex) {
            Logger.getLogger(DAOTipoAcidente.class.getName()).log(Level.SEVERE, null, ex);
            return false;
        }
	}

	@Override
	public Collection consultar(Entidade obj) {
		 try {
			 	TipoAcidente categoria = (TipoAcidente) obj;
	            String sql ="";
	            PreparedStatement pstm;
	            conexao.getConexao().createStatement();
	           
	            sql = "SELECT * from tba_tipos_acidentes_trabalho where id_tipo = ?";
	            pstm = conexao.getConexao().prepareStatement(sql);
	            pstm.setInt(1 , categoria.getId());
	            
	            
	            
	            ResultSet rs = pstm.executeQuery();
	            ArrayList<Entidade> lista = new ArrayList<Entidade>();
	            while (rs.next()) {     
	            	TipoAcidente categoriaSelecionada = new TipoAcidente();
	            	            	
	            	categoriaSelecionada.setId(rs.getInt("id_tipo"));  
	            	categoriaSelecionada.setDescricao(rs.getString("descricao"));	            	
	            	
	            	lista.add(categoriaSelecionada);
	                
	                
	            }  
	            conexao.getConexao().close();
	            pstm.close();
	            return lista;
	        } catch (SQLException ex) {
	            Logger.getLogger(DAOTipoAcidente.class.getName()).log(Level.SEVERE, null, ex);
	            return null;
	        }
	}

}
